
import { createVNode, render } from 'vue'
import XtxConfirm from './xtx-confirm'

// 准备一个DOM容器
const div = document.createElement('div')
div.setAttribute('class', 'XtxConfirm')
document.body.appendChild(div)

// 返回的是Promise对象 最后要销毁组件
export default ({ type, text }) => {
  // 1、导入被创建的组件
  // 2、使用createVNode创建虚拟节点
  // 3、准备一个DOM容器
  // 4、使用render函数渲染组件到容器上
  return new Promise((resolve, reject) => {
    // 取消触发的函数
    const cancelCallback = () => {
      render(null, div)
      reject(new Error('点击取消'))
    }
    // 确认触发的函数
    const submitCallback = () => {
      render(null, div)
      resolve()
    }

    const vn = createVNode(XtxConfirm, { type, text, cancelCallback, submitCallback })
    render(vn, div)
  })
}
